import subprocess
from datetime import datetime
import os

def start_recording(save_to_file=False, output_dir="temp_record_script"):
    """
    启动 Playwright 录制工具
    
    :param save_to_file: 是否自动保存录制的脚本
    :param output_dir: 保存脚本的目录
    """
    # 单独运行命令 npx playwright codegen
    # 基础命令 - 使用完整路径或确保环境变量正确配置
    # 对于Windows，尝试使用npm.cmd
    cmd = ["npm.cmd", "exec", "--", "playwright", "codegen",'http://192.168.0.155:8870']
    
    # 如果需要自动保存文件
    if save_to_file:
        # 创建输出目录（如果不存在）
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)
        
        # 生成带时间戳的文件名（避免重复）
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = f"recorded_test_{timestamp}.py"  # 生成 python 格式的脚本
        output_path = os.path.join(output_dir, filename)
        
        # 添加保存参数（指定输出文件和语言为 python）
        cmd.extend(["--output", output_path, "--lang", "py"])
        print(f"录制的脚本将保存为：{output_path}")
    
    print("启动 Playwright 录制工具...")
    print("提示：在打开的浏览器中操作，代码会自动生成")
    print("完成后关闭浏览器窗口即可结束录制\n")
    
    try:
        # 执行命令
        subprocess.run(cmd, check=True)
        print("\n录制已完成")
        if save_to_file:
            if 'output_path' in locals():
                timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
                filename = f"recorded_test_{timestamp}.ps"
                output_path = os.path.join(output_dir, filename)
                print(f"脚本已保存到：{output_path}")
    except subprocess.CalledProcessError as e:
        print(f"录制过程出错：{e}")
    except KeyboardInterrupt:
        print("\n录制已被手动终止")

if __name__ == "__main__":
    # 配置是否自动保存（True/False）
    AUTO_SAVE = True
    # 启动录制
    start_recording(save_to_file=AUTO_SAVE)